วิธีการใช้ ELB (ALB) ใน Elastic Beanstalk
ครั้งนี้ผมจะมาแนะนำเกี่ยว วิธีการใช้ ELB (ALB) ใน Elastic Beanstalk
สิ่งที่ต้องมี
- มีการสร้าง Application ใน Elastic Beanstalk
ตัวอย่างในบทความนี้ สมมติว่าผมสร้าง Application โดยใช้ชื่อดังนี้
Application:tinnakorn
การใช้ ELB (ALB)
ก่อนอื่นผมจะสร้าง Environment โดยตั้งค่าการใช้งาน ELB (ALB)
ตัวอย่างในบทความนี้ ผมจะสร้าง Environment โดยใช้ชื่อดังนี้
Environment:tinnakorn-loadbalancer
การสร้าง Environment
สามารถดูตัวอย่างเพิ่มเติมได้ที่บทความด้านล่างนี้ (สำหรับผู้ใช้งานที่รู้วิธีการสร้าง Environment อยู่แล้วข้ามขั้นตอนนี้ไปได้เลยครับ)
ตัวอย่างการสร้าง Environment
※Environment information
Environment name:tinnakorn-loadbalancer
(ชื่ออะไรก็ได้)
Domain:tinnakorn-loadbalancer
(ชื่ออะไรก็ได้)※Platform
Platform:PHP
※Application code
เลือกวิธีอัปโหลดไฟล์ตามที่คุณต้องการ
ต่อไปคือการตั้งค่าในConfigure more options
โดยทำตามหัวข้อดังต่อไปนี้
※หัวข้อ Capacity
คลิกปุ่มEdit
ที่หัวข้อ Capacity แล้วตั้งค่าดังนี้:
» Environment type:Load balanced
» Instances: Min2
, Max2
(ครั้งนี้ เราจะทำการล็อกจำนวน Instance อยู่ที่ 2 ตัว)
เลื่อนลงมาด้านล่างสุดที่หัวข้อ Scaling triggers แล้วตั้งค่าดังนี้:
» Lower threshold:0
(หากไม่ตั้งค่านี้เป็น 0 ก็จะเกิด Error Message)
» คลิกปุ่มSave
※หัวข้อ Load balancer
คลิกปุ่มEdit
ที่หัวข้อ Load balancer แล้วตั้งค่าดังนี้:
Load balancer type
» Load balancer type: ◉ Application Load Balancer
การตั้งค่า Stickness Policy
Processes
» ติ๊ก✅
default
» คลิกActions
และเลือกEdit
สิ่งที่เราจะทำต่อไปนี้คือการล็อกปลายทาง EC2 Instance ที่จะเชื่อมต่อ โดยการใช้ข้อมูลจาก Cookie ที่ฝังใน HTTP response ด้วย ELB
ซึ่งไม่ใช่สิ่งที่จำเป็นจะต้องทำ แต่เพื่อให้แอปพลิเคชันทำงานได้อย่างปลอดภัย เราแนะนำให้ทำตามขั้นตอนนี้ครับ
แล้วเลื่อนลงมาด้านล่างสุดที่หัวข้อ Sessions แล้วตั้งค่าดังนี้:
» ติ๊ก✅
Stickiness policy enabled
» คลิกปุ่มSave
» เลื่อนลงมาด้านล่างสุดอีกครั้งและคลิกปุ่มSave
เมื่อตั้งค่าตามขั้นตอนข้างต้นทุกอย่างเสร็จแล้ว ให้เลื่อนลงมาด้านล่างสุดและคลิกปุ่มCreate environment
จากนั้นรอระบบเริ่มต้นสักครู่ครับ
ตรวจสอบสภาพแวดล้อมหลังจากเริ่มต้นระบบ
ก่อนอื่นเรามาทำการตรวจสอบเว็บไซต์ที่สร้างขึ้นมาก่อนครับ (เว็บไซต์ Laravel นี้เป็นแค่ตัวอย่าง)
http://[your_environment_name].ap-southeast-1.elasticbeanstalk.com/
ช่วงเวลาที่ผมสร้าง ELB (ALB) ใน Elastic Beanstalk โดยประมาณคือJuly 27 2022 at 9:08 AM
หลังจากเริ่มต้นระบบเสร็จแล้ว เราจะได้สภาพแวดล้อมตามที่สร้างใน Elastic Beanstalk ดังนี้
Load Balancers
เข้ามาที่ [Amazon EC2 > Load Balancers]
จะเห็นว่าเราได้ Load Balancers มาแล้ว
Auto Scaling Groups
เข้ามาที่ [Amazon EC2 > Auto Scaling Groups]
จะเห็นว่าเราได้ Auto Scaling Groups มาแล้ว
Instances
เข้ามาที่ [Amazon EC2 > Instances]
จะเห็นว่าเราได้ Instances มาแล้ว ซึ่งในส่วนนี้เราจะได้ Instances มา 2 ตัวตามที่ตั้งค่าไว้ใน Elastic Beanstalk เมื่อสักครู่นี้ครับ
การเชื่อมต่อ Server EC2
เราสามารถเชื่อมต่อ Server EC2 จาก EC2 อื่นได้โดยใช้Public IPv4 address
และPrivate IPv4 addresses
ของ EC2 ที่ต้องการเชื่อมต่อครับ
ดูวิธีการทำได้ที่ลิงก์บทความด้านล่างนี้ครับ
นอกจากนี้ยังมีวิธีการเชื่อมต่อ Server EC2 ด้วยโปรแกรม PuTTY และ VSCode ดังนี้
การเชื่อมต่อ Server EC2 ด้วย PuTTY
ดูตัวอย่างที่นี่: การ Connect to EC2 by PuTTYการเชื่อมต่อ Server EC2 ด้วย VSCode
ดูตัวอย่างที่นี่: ทำการติดตั้ง Extention Remote – SSH ใน VSCode และทดลองใช้งาน EC2 โดยตรงใน VSCode
ทดสอบ Auto Scaling
มาที่ EC2 instance และให้เรา Terminate instance ที่สร้างขึ้นจาก Auto Scaling ดูครับ
เมื่อทำการ Terminate Instance เสร็จแล้ว ให้เข้าไปที่หน้า Target Groups แล้วตรวจสอบ Healthy จะเห็นว่ามีสถานะเป็น 1
จะสังเกตว่าเรายังสามารถเข้าใช้เว็บไซต์ได้ตามปกติ (ในขณะที่ Healthy เป็น 1) เพราะว่า ELB ได้ทำการนำ Instance ที่ Terminate ออกจากการเชื่อมต่อแล้วนั่นเเอง
พูดง่ายๆคือต่อให้มี EC2 ตัวใดตัวหนึ่งเกิดปัญหา เว็บไซต์ก็ยังสามารถใช้งานต่อได้ครับ
http://[your_environment_name].ap-southeast-1.elasticbeanstalk.com/
หลังจากนี้ให้รอสักครู่จนกว่า Healthy จะมีสถานะเป็น2
และเมื่อเรากลับมาดูที่หน้า Instances อีกทีจะพบว่ามี Instance ถูกสร้างขึ้นใหม่จาก Auto Scaling มาแทนที่
และนี่ก็เป็นเพราะ Auto Scaling จะคอยตรวจสอบว่า EC2 เป็นไปตามเงื่อนไขที่ตั้งค่าไว้ไหม
หากไม่ตรงตามเงื่อนไขก็จะปรับค่าให้ตรงตามเงื่อนไข โดยในกรณีนี้คือการเปิดใช้งาน Instance ให้ครบ 2 ตัวนั่นเอง
สรุป
กรณีที่ทำการตั้งค่า Auto Scaling Groups ด้วยตนเองนั้นจะยุ่งยาก อย่างไรก็ตาม การตั้งค่า Auto Scaling Groups โดยใช้ Elastic Beanstalk นั้นง่ายมากๆ และนี่ก็เป็นอีก 1 ข้อดีของการใช้งาน Elastic Beanstalk นั่นเองครับ
บทความที่เกี่ยวข้อง
- Amazon EC2 Auto Scaling
- ทดลองใช้ Auto Scaling ใน EC2
- Amazon ALB (Application Load Balancer) คืออะไร? การแนะนำฟังก์ชันล่าสุดของ AWS ในปี 2022
- ทำความรู้จักกับ ALB, NLB, GLB ของ ELB(Elastic Load Balancing) ในเบื้องต้น
- AWS Auto Scaling คืออะไร? การแนะนำฟังก์ชันล่าสุดของ AWS ในปี 2022
- ทดลอง Deploy PHP ด้วย Elastic Beanstalk และลองเชื่อมต่อกับ RDS
- ทดลอง Deploy Laravel ด้วย Elastic Beanstalk และลองเชื่อมต่อกับ RDS